Turbo C Project File E:\TEMP E:\TC\INCLUDE TC\INCLUDE E:\TC\LIB TC\LIB il\ffr.exe test -k ibm ~GREP -n+ $MEM(64) $NOSWAP $PROMPT $CAP MSG(GREP2MSG)void *.c ~Turbo Assembler C:\TD\TASM /MX /ZI $TASM Turbo ~Debugger $EXENAME 7PLUS History: ============== v1.4: ----- Finally 7PLUS runs on AMIGA as well (correcting wouldn't work). Compatibility to systems with filename structures different to MS_DOS/ATARI added. -J, -P and -T option added. Several minor bug-fixes. v1.41/1.43: ----------- Bug in -J option fixed. When prompted for new filename, ENTER would not break. Fixed. v1.5: ----- Compatibility to UNIX-based systems. When decoding and a COR-file is already present, 7PLUS will do the correction first. -J option can now do multiple joining. -X can now extract selected files. -N option added (Atari_St only). -Y option added for automated surroundings. -# option for use of 7PLUS in BBS file servers. Minichecksum added to headers. Checksum added to ERR- and COR-files. Length of original file added to ERR- and COR-files to insure, only the correct original file is used for compiling COR-Files. Manuals given a good workover. Detailed chapters about up- and down- loading added to help newcomers. Changes in headers a/s/o are still compatible with older versions and vice versa. Bugs fixed, that were present since v1.0, but never detected: ------------------------------------------------------------- 1st bug: -------- When encoding a file using the -S option, 7PLUS would fail when the encoded file was shorter then the number of lines specified. Example: TEST.TXT is 1024 bytes long which will result in 17 code lines. If encoded with '-S 40', 7PLUS wouldn't decode it, because it found lines 18 through 40 missing... 2nd bug: -------- When splitting a file whose length can be devided through 62 without a rest, 7PLUS would leave the last part empty, when the number of re- sulting lines could be devided evenly through the number of parts. Example: TEST.TXT is 3100 bytes long. If encoded into 2 equal parts using '-SP 2', 7plus would leave the second part empty, containing only the header and the foot line. These bugs manifested themselves only in rare cases, but versions prior to v1.5 should be replaced by the v1.5 anyway. v1.6: ----- Added rebuild.c. Now one-byte errors are automatically corrected. For this, an additional 15bit-checksum was added to the header and each code line. Due to the additional checksum, v1.6 files can only be decoded with version 1.4 and higher. V1.3 and lower will report all lines damaged! Found minor bugs in stripping normal CRC to 14 Bit '&0x1fff' instead of '&0x3fff' .... embarassing... Also, minichecksum took wrong offset to header, so CRC was not calcula- ted. v1.61: ------ Optimized rebuild.c for speed. Now runs 40% faster. Also, a message is output, telling which line has been rebuilt. v1.62: ------ Had to make some changes in the handling of extended filenames on AMIGA and UNIX. The changes are unfortunately not compatible to previous versions, sorry... A bit of cosmetics done on 'rebuild'-outputs. v1.63: ------ Due to a bug inserted by DL4ZBH, where there was none, v1.63 was neces- sary to be able to redistribute the AMIGA-version. However it's identical with the v1.62... v1.70: ------ test_file() now asks for 'yes', 'no' and 'always'. This is practical, when reencoding a file without manually erasing the encoded files created earlier. Rebuilding of header did not work when a space character was missing. The space charachter is not part of the 7PLUS-code, so rebuild() never tried to put it in the header... fixed. When decoding, the output-file is not closed after each decoded part and re-opened before the next part. This save quite some time, because the write buffer does not need to be flushed as often as before. v2.00: ------ 7PLUS now works with metafiles. This increases the speed of executing COR-files extremely. Splitting of CORs. Multiple COR-handling. extract() now also extracts info files that accompany 7PLUS-files. In the UK there is a strange BBS that keeps stripping the first space of the 7PLUS file headers. extract will now automatically add the missing space character. 7PLUS-files can now also be used as COR-files (-C). Recreating ERRs from metas. 7PLUS can clean up behind itself now (-K). Adding of head- and foot-text to 7PLUS-files (-TP). Timestamp of original file is kept. Pepped up some of the screen-outputs. When joining error reports, 7PLUS will not stop if one ERR-file is missing in line. Same goes for CORs. And lot's of minor stuff... v2.01: ------ Found a slight bug in join(). It kept on looking for the next ERR in line, even if there were no more. This meant, that after execution of join, there was a delay of abt 10 seconds. DL1XAO @DB0AGM.DEU.EU (920622) { Due to some differences in the behaviour of scanf() on the Atari, the statements '%X' had to be changed to '%lX'. Quick-extract: Files that have the extension '.x' will automatically be run through the 7PLUS extractor when doubleclicked on. /* This will also work when compiled on other systems! (Axel) */ Modifying filelengths is not supported by TOS, therefore, an index file (*.7ix) will be created along with every meta file. When prompted for new filename, ENTER wouldn't break. We had that one before, didn't we?? :-) } Because of the handling of the metafiles, 7PLUS requires abt 24K of room on the stack to run properly! Forgot to mention this with the v2.00... sri v2.02: ------ Please! Don't hit me! I hope, this would not happen, but it did... Thanks to Uli DF7SC, two bugs have been found in the V2.00 and v2.01: Bug 1: decode() If the line before the last line in the last file was corrupted, the last line was always written with a length of 62 bytes. Fixed. Bug 2: correct() (only occures on systems that do not use chsize()) If the last line of the last file was missing, sometimes chsize() didn't work. chsize() would act as if it DID change the filessize, and did not report an error, even if it failed. This bug may only be true with Borland's compilers.. Fixed. v2.03: ------ Another bug related to the last line of a file (reported by DF7SC, unfortunately he forgot to report it the first time :-<) This bug is present since version 1.60. decode() If the last line of a file is corrupted in a way that it still has the right length and more than one character is incorrect, the line would not be reported as corrupt. If it was the last line of the last file, the metafile had an incorrect length and 7PLUS reported 'Decoded file has wrong length..'. Fixed. Requirements on stack space are back to normal. The struct m_index is now allocated space on the heap, rather than on the stack. Remember: Nobody's perfect and Murphy never sleeps... 73s, Axel. DG1BBQ @DB0CL.DEU.EU 7PLUS.C LUS\7PLUS.C DECODE.C US\DECODE.C ENCODE.C US\ENCODE.C CORRECT.C S\CORRECT.C REBUILD.C S\REBUILD.C EXTRACT.C S\EXTRACT.C JOIN.C PLUS\JOIN.C UTILS.C LUS\UTILS.C ..\INCLUDE\LIMITS.H ..\INCLUDE\ERRNO.H ..\INCLUDE\TIME.H ..\INCLUDE\SYS\STAT.H 7PLUS.C DECODE.C ..\INCLUDE\CONIO.H ..\INCLUDE\STDARG.H ..\INCLUDE\IO.H ..\INCLUDE\DIR.H ..\INCLUDE\CTYPE.H ..\INCLUDE\STDLIB.H ..\INCLUDE\STRING.H ..\INCLUDE\STDIO.H CORRECT.C UNIX.C REBUILD.C ENCODE.C GLOBALS.H UNIX.C UTILS.C JOIN.C EXTRACT.C 7PLUS.H